<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .showContainer {
        width: 520px;
        height: 280px;
        margin: 0 auto;
        position: relative;
        border: 1px solid;
        overflow: hidden;
      }
      .container {
        width: 3120px;
        height: 280px;
        position: absolute;
        left: 0;
      }
      .container img {
        float: left;
      }
      .nextorpre {
        width: 520px;
        position: absolute;
        top: 40%;
        font-size: 50px;
        color: red;
        z-index: 10;
      }
      .next {
        float: right;
      }
    </style>
  </head>
  <body>
    <div class="showContainer">
      <div class="nextorpre">
        <span class="pre"> <<span class="next">></span> </span>
      </div>
      <div class="container">
        <img src="./imgs/1t.png" alt="" /><img src="./imgs/2t.png" alt="" /><img
          src="./imgs/3t.png"
          alt=""
        /><img src="./imgs/4t.png" alt="" /><img src="./imgs/5t.png" alt="" />
      </div>
    </div>
    <script>
      //轮播图的运动就是container容器的运动 让container向左边移动就可以了

      var containerEle = document.querySelector(".container");
      var showContainerEle = document.querySelector(".showContainer");
      //
      var index = 0; //图片所在的位置索引值
      //
      //
      //

      //自动播放函数,打开页面自动播放 开头直接调用
      var timer;

      autoPlay();
      function autoPlay() {
        console.log("autoplay");
        timer = setInterval(function () {
          move(containerEle, "left", -520 * (index + 1), function () {
            //   console.log("运动结束");
            index++;
            console.log("运动结束", index);
            if (index == 5) {
              containerEle.style.left = "0px";
              index = 0;
            }
          });
        }, 2000); //间隔事件要大于动画完成的事时间
      }
      //
      //
      //实现点击下一页按钮之后切换到下一页
      //获取下一页按钮
      var nextEle = document.querySelector(".next");
      nextEle.onclick = function () {
        move(containerEle, "left", -520 * (index + 1), function () {
          index++;
          if (index == 5) {
            containerEle.style.left = "0px";
            index = 0;
          }
        });
      };
      //
      //再设置鼠标移入的时候 轮播图停止运动  鼠标移出的时候又开始自动轮播
      //enter leave      over  out
      //鼠标移入
      showContainerEle.onmouseenter = function () {
        //停止轮播
        clearInterval(timer); //这里调用不到函数里的timer,就只能把函数里面timer做伪全局
      };
      //鼠标移出
      showContainerEle.onmouseleave = function () {
        //重新开始轮播
        autoPlay();
      };

      //
      //
      //
      //方法一就是直接在div里面复制一个img1 ,但是遇到后期有变量或者有变化的时候不方便修改

      //方法二  用js去添加图片
      //要赋值第一张图片 到最后一张图的后面去
      function copyImg() {
        //获取第一个图片
        var firstItem = containerEle.firstElementChild;
        console.log(firstItem);
        //给第一个元素复制一份
        var copyFirstItem = firstItem.cloneNode(true);
        containerEle.style.width = "3120px";
        //把复制的第一张图片添加到最后
        containerEle.appendChild(copyFirstItem);
      }
      copyImg();
      //
      //
      //
      //
      //
      //封装一个函数
      function move(boxEle, dir, target, cb) {
        var timer = setInterval(function () {
          // 获取当前box的left值
          var num = parseInt(getComputedStyle(boxEle)[dir]);
          // 当前方块所在的位置 和 目标位置比较
          num += 5 * (target > num ? 1 : -1);
          boxEle.style[dir] = num + "px";
          // 假定 运动 500的时候开始向下移动；
          if (num == target) {
            clearInterval(timer);
            // console.log("停止了");
            cb();
          }
        }, 5);
      }
    </script>
  </body>
</html>
